package com.jdk.demo.reflect.clazz;

import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;

public class GenericParameterTypesDemo {

	public static void main(String[] args) throws Exception {
		Class<?> clazz = Class.forName("com.jdk.demo.reflect.User");
		// 利用反射取到方法参数类型
        Method method = clazz.getMethod("setAddress", List.class);
        // 获取方法的参数列表
        Type[] paramTypes = method.getGenericParameterTypes();
        // 由于已知只有一个参数，所以这里取第一个参数类型
        ParameterizedType type = (ParameterizedType) paramTypes[0];
        // 获取参数的实际类型
        Type[] params = type.getActualTypeArguments();
        System.out.println("params[0] = " + params[0].getTypeName());
	}

}
